home *** CD-ROM | disk | FTP | other *** search
/ Windows 6-Pak - Disc 4 / Windows 6-Pak (InfoMagic) (Disc 4) (1999).ISO / Text-Chat-Scripts / pp-320m.exe / pp300 / p-other1.mrc < prev    next >
Text File  |  1998-08-15  |  30KB  |  707 lines

  1. ; -----------------------------------------------------
  2. ; Peace and Protection (by misspai)
  3. ; -----------------------------------------------------
  4. ; Custom window popups (loads
  5. ; into remotes) (First section)
  6. ; -----------------------------------------------------
  7. ; Detailed channel server usage
  8. ; window
  9. ; -----------------------------------------------------
  10. menu @Server {
  11.   dclick /if ($1 < 4) halt | set %-servtocon $strip($gettok($line(@server,$1),3,32)) | set %_arhelp server %-servtocon | _pentry _arhelp6667 Connecting to %-servtocon $+ -Port to use?
  12.   Connect to server...:if ($sline(@server,1).ln < 4) halt | set %-servtocon $strip($gettok($sline(@server,1),3,32)) | set %_arhelp server %-servtocon | _pentry _arhelp6667 Connecting to %-servtocon $+ -Port to use?
  13.   -
  14.   Ping server:{
  15.     set %.num $sline(@server,0)
  16.     set %.delay 0
  17.     :loop
  18.     set %.line $sline(@server,%.num).ln
  19.     if (%.line < 4) goto next
  20.     set %.theline $sline(@server,%.num)
  21.     if (%.delay < 1) sping $strip($gettok(%.theline,3,32)) @server
  22.     else .timer 1 %.delay sping $strip($gettok(%.theline,3,32)) @server
  23.     rline @server %.line $gettok(%.theline,1-6,32) %col.att $+ (waitingáon ping) $gettok(%.theline,9-,32)
  24.     inc %.delay 2
  25.     :next
  26.     if ($_vd(.num) > 0) goto loop
  27.     set %_serv.pop4 Sort by server ping
  28.     set %_serv.pop4o $true
  29.   }
  30.   Ping all servers:{
  31.     set %.num $line(@server,0)
  32.     set %.delay 0
  33.     :loop
  34.     set %.theline $line(@server,%.num)
  35.     if (%.delay < 1) sping $strip($gettok(%.theline,3,32)) @server
  36.     else .timer 1 %.delay sping $strip($gettok(%.theline,3,32)) @server
  37.     rline @server %.num $gettok(%.theline,1-6,32) %col.att $+ (waitingáon ping) $gettok(%.theline,9-,32)
  38.     inc %.delay 2
  39.     if ($_vd(.num) >= 4) goto loop
  40.     set %_serv.pop4 Sort by server ping
  41.     set %_serv.pop4o $true
  42.   }
  43.   -
  44.   %_serv.pop1:{
  45.     _dosort @server 4 4 $chr(40) 32
  46.     unset %_serv.pop1
  47.     set %_serv.pop2 Sort by number of users
  48.     set %_serv.pop3 Sort by server name
  49.     if (%_serv.pop4o) set %_serv.pop4 Sort by server ping
  50.     rline @Server 1 Currently sorted by server hops (closest servers first)
  51.   }
  52.   %_serv.pop2:{
  53.     _dosort @server 4 10  32 >
  54.     unset %_serv.pop2
  55.     set %_serv.pop1 Sort by server hops
  56.     set %_serv.pop3 Sort by server name
  57.     if (%_serv.pop4o) set %_serv.pop4 Sort by server ping
  58.     rline @Server 1 Currently sorted by number of users (most users first)
  59.   }
  60.   %_serv.pop3:{
  61.     _dosort @server 4 3  32
  62.     unset %_serv.pop3
  63.     set %_serv.pop1 Sort by server hops
  64.     set %_serv.pop2 Sort by number of users
  65.     if (%_serv.pop4o) set %_serv.pop4 Sort by server ping
  66.     rline @Server 1 Currently sorted by server name (alphabetically)
  67.   }
  68.   %_serv.pop4:{
  69.     _dosort @server 4 7 $chr(40) 115
  70.     unset %_serv.pop4
  71.     set %_serv.pop1 Sort by server hops
  72.     set %_serv.pop2 Sort by number of users
  73.     set %_serv.pop3 Sort by server name
  74.     rline @Server 1 Currently sorted by ping time (fastest times first)
  75.   }
  76.   -
  77.   Get new list:scan $gettok($window(@Server).titlebar,3,32) d
  78.   -
  79.   Copy to clipboard:if ($sline(@server,1).ln < 4) halt | clipboard $_stripout($sline(@server,1))
  80.   Copy server to clipboard:if ($sline(@server,1).ln < 4) halt | clipboard $strip($gettok($sline(@server,1),3,32))
  81.   -
  82.   Close:window -c @Server
  83.   Help:help ! server usage popups
  84. }
  85. ; _dosort @window first-line-# token-num char-remove token-to-seperate (>)
  86. alias _dosort {
  87.   aline 15 $1 -
  88.   set %.sort.from $2
  89.   set %.sort.to $line($1,0)
  90.   :loop1
  91.   set %.sort.line $line($1,%.sort.from)
  92.   dline $1 %.sort.from
  93.   if (%.sort.line == -) return
  94.   set %.sort.crit $gettok($remove($strip($gettok(%.sort.line,$3,32)),$4),1,$5)
  95.   set %.sort.toline %.sort.to
  96.   :loop2
  97.   if (%.sort.toline <= $line($1,0)) {
  98.     if ($6 == >) {
  99.       if ($gettok($remove($strip($gettok($line($1,%.sort.toline),$3,32)),$4),1,$5) > %.sort.crit) { inc %.sort.toline | goto loop2 }
  100.     }
  101.     elseif ($gettok($remove($strip($gettok($line($1,%.sort.toline),$3,32)),$4),1,$5) < %.sort.crit) { inc %.sort.toline | goto loop2 }
  102.   }
  103.   iline $1 %.sort.toline %.sort.line
  104.   dec %.sort.to
  105.   goto loop1
  106. }
  107. ; -----------------------------------------------------
  108. ; Music file roulette window
  109. ; -----------------------------------------------------
  110. menu @Roulette {
  111.   dclick /if (%+roulette.retain) _doroul $1 + | else _doroul $1
  112.   Play file and close:_doroul $sline(@Roulette,1).ln
  113.   Play file, stay open:_doroul $sline(@Roulette,1).ln +
  114.   -
  115.   Play randomly:_doroul 4
  116.   Playlist all:_doroul 5
  117.   Playlist selected:_doroul 5 !
  118.   -
  119.   Set file description...:desc $_getexp($sline(@Roulette,1))
  120.   Clear file description:cdesc $_getexp($sline(@Roulette,1))
  121.   Show descriptions:set %_+roulcolor $true | _srdesc
  122.   -
  123.   On play, window
  124.   .$_dynpop(%+roulette.retain) Stays open:if ($_not(%+roulette.retain)) _doroul 2
  125.   .$_dynpop($_not(%+roulette.retain)) Closes:if (%+roulette.retain) _doroul 2
  126.   -
  127.   File finder...:_r2ff
  128.   Close:window -c @Roulette
  129.   Help:help ! roulette selection popups
  130. }
  131. alias _r2ff {
  132.   window -c @Express
  133.   window -nl @Express $_winpos(50,30,50,50) @Express %font.basic
  134.   set %.file $_ppdir $+ r2fftemp.txt
  135.   set %.num $calc($line(@Roulette,0) - 6)
  136.   .savebuf %.num @Roulette %.file
  137.   .loadbuf @Express %.file
  138.   titlebar @Express File Finder ( $+ %.num files found)
  139.   sline @Express 1
  140.   iline @Express 1 - Search performed : @Roulette window -
  141.   iline @Express 2 - Select file(s) and right-click for options -
  142.   iline @Express 3 - Double-click will :  $+ %eff.click file $+  -
  143.   iline @Express 4 $chr(160)
  144.   window -arb @Express
  145.   .remove %.file
  146. }
  147. alias _ff2r {
  148.   window -c @Roulette | open @Roulette
  149.   set %.file $_ppdir $+ ff2rtemp.txt
  150.   set %.num $calc($line(@Express,0) - 4)
  151.   .savebuf %.num @Express %.file
  152.   .loadbuf @Roulette %.file
  153.   titlebar @Roulette selection for sound files ( $+ %.num matches)
  154.   iline @Roulette 1 - Double-click on a file to play it - (right-click for other options)
  155.   if (%+roulette.retain) iline @Roulette 2 - Window will stay open on play (double-click here to toggle) -
  156.   else iline @Roulette 2 - Window will close on play (double-click here to toggle) -
  157.   iline @Roulette 3 $chr(160)
  158.   iline -s @Roulette 4 - Double-click here to select one randomly -
  159.   iline @Roulette 5 - Double-click here to playlist all files -
  160.   iline @Roulette 6 $chr(160)
  161.   window -arb @Roulette
  162.   set %_+roulcolor $true | .remove %.file
  163. }
  164. alias _srdesc {
  165.   _progress.1 Grabbing file descriptions...
  166.   _progress.2 0 0%
  167.   set %.pl.num $line(@Roulette,0)
  168.   set %.pl.tot %.pl.num
  169.   :loop
  170.   set %.pl.file $_getexp($line(@Roulette,%.pl.num))
  171.   set %.pl.desc $_ppdesc($nopath(%.pl.file))
  172.   if ((%.pl.desc == $null) || (%.pl.desc == (none))) rline @Roulette %.pl.num %.pl.file
  173.   else rline @Roulette %.pl.num %col.info1 $+ $_s2f(%.pl.desc) $+  $chr(160) %.pl.file
  174.   if ($_vi(.perc) > 4) {
  175.     set %.perc $int($calc((%.pl.tot - %.pl.num) * 100 / (%.pl.tot - 6)))
  176.     _progress.2 %.perc %.perc $+ %
  177.     unset %.perc
  178.   }
  179.   if ($_vd(.pl.num) > 6) goto loop
  180.   window -c @Progress
  181. }
  182. alias _doroul {
  183.   if ($1 == 2) {
  184.     set %+roulette.retain $_not(%+roulette.retain)
  185.     if (%+roulette.retain) rline @Roulette 2 - Window will stay open on play (double-click here to toggle) -
  186.     else rline @Roulette 2 - Window will close on play (double-click here to toggle) -
  187.     return
  188.   }
  189.   if ($1 == 5) {
  190.     .timer918 off | .timer921 off
  191.     set %.pl.type $_rtok(1,46,$_getexp($line(@Roulette,7)))
  192.     if (%.pl.type == mp3) {
  193.       set %.pl.exe $_mp3exe
  194.       if (%.pl.exe == $null) _error MP3 player not defined!
  195.     }
  196.     elseif (%.pl.type == mp2) {
  197.       set %.pl.exe $_mp2exe
  198.       if (%.pl.exe == $null) _error MP2 player not defined!
  199.     }
  200.     else _error Only MP2/MP3s can be playlisted!
  201.     set %.pl.file $_ppdir $+ playlist
  202.     if ((maplay isin %.pl.exe) || (mp2win isin %.pl.exe)) set %.pl.file %.pl.file $+ .lst
  203.     else set %.pl.file %.pl.file $+ .m3u
  204.     if ($exists(%.pl.file)) .remove %.pl.file
  205.     if ($2 == !) {
  206.       sline -r @Roulette 1 | sline -r @Roulette 2 | sline -r @Roulette 3
  207.       sline -r @Roulette 4 | sline -r @Roulette 5 | sline -r @Roulette 6
  208.       set %.pl.num $sline(@Roulette,0)
  209.       if (%.pl.num < 1) _error No files selected to playlist!
  210.       set %.pl.cur 1
  211.       :loop
  212.       write %.pl.file $_getexp($sline(@Roulette,%.pl.cur))
  213.       if ($_vi(.pl.cur) <= %.pl.num) goto loop
  214.     }
  215.     elseif (%_+roulcolor) {
  216.       set %.pl.num $line(@Roulette,0)
  217.       set %.pl.cur 7
  218.       :loop
  219.       write %.pl.file $_getexp($line(@Roulette,%.pl.cur))
  220.       if ($_vi(.pl.cur) <= %.pl.num) goto loop
  221.     }
  222.     else .savebuf $calc($line(@Roulette,0) - 6) @Roulette %.pl.file
  223.     if ($chr(32) isin $mircdir) run -n %.pl.exe " $+ $mircdir $+ %.pl.file $+ "
  224.     else run -n %.pl.exe %.pl.file
  225.     return
  226.   }
  227.   if ($1 == 4) set %.dr.ln $r(7,$line(@Roulette,0))
  228.   else set %.dr.ln $1
  229.   if (%.dr.ln < 7) return
  230.   set %.dr.file $_getexp($line(@Roulette,%.dr.ln))
  231.   if ($2 == +) window -n @Roulette
  232.   else window -c @Roulette
  233.   set %.dr.ext $_mapext($_rtok(1,46,%.dr.file))
  234.   if ((%.dr.ext == mp2) || (%.dr.ext == mp3)) set %.dr.ext mp
  235.   if (%.dr.ext == wav) set %.dr.name Wave
  236.   elseif (%.dr.ext == mid) set %.dr.name Midi
  237.   elseif (%.dr.ext == mp) set %.dr.name MP2/MP3
  238.   else {
  239.     set %.dr.name %soundfile. [ $+ [ %.dr.ext ] ]
  240.     if (%.dr.name == $null) set %.dr.name Custom Sound
  241.   }
  242.   _dosnd $_s2f(%.dr.name) . $+ %.dr.ext %.dr.file
  243. }
  244. ; -----------------------------------------------------
  245. ; Express File Find window
  246. ; -----------------------------------------------------
  247. menu @Express {
  248.   dclick /if ($1 < 5) halt | if ($sline(@Express,0) > 1) halt | if (%eff.click == Edit) _dosel @Express run $_ppcfg(Misc,TextView) | elseif (%eff.click == Run) _dosel @Express run | elseif (%eff.click == Play) splay $_getexp($sline(@Express,1)) | else { set %_arhelp _dosel @Express " s | _askr _arhelp Nick to send $_plural(file,$sline(@Express,0)) to? }
  249.   Calculate
  250.   .File sizes:_effhl z
  251.   .File lengths in lines:_effhl l
  252.   Highlight
  253.   .Find text...:_askr _efffind Text to find in filenames?
  254.   .-
  255.   .Filename:_effhl f
  256.   .Extension:_effhl e
  257.   .Subdir:_effhl s
  258.   Dblclick
  259.   .$_dynpop($_if( [ edit ] isin [ %eff.click ] )) Edit:set %eff.click Edit | rline @Express 3 - Double-click will :  $+ %eff.click file $+  -
  260.   .$_dynpop($_if( [ run ] isin [ %eff.click ] )) Run:set %eff.click Run | rline @Express 3 - Double-click will :  $+ %eff.click file $+  -
  261.   .$_dynpop($_if( [ dcc ] isin [ %eff.click ] )) Send:set %eff.click DCC Send | rline @Express 3 - Double-click will :  $+ %eff.click file $+  -
  262.   .$_dynpop($_if( [ play ] isin [ %eff.click ] )) Play:set %eff.click Play | rline @Express 3 - Double-click will :  $+ %eff.click file $+  -
  263.   -
  264.   Edit:_dosel @Express run $_ppcfg(Misc,TextView)
  265.   Run:_dosel @Express run
  266.   Send
  267.   .$query(1):_dosel @Express " s $query(1)
  268.   .$query(2):_dosel @Express " s $query(2)
  269.   .$query(3):_dosel @Express " s $query(3)
  270.   .$remove($chat(1),=):_dosel @Express " s $remove($chat(1),=)
  271.   .$remove($chat(2),=):_dosel @Express " s $remove($chat(2),=)
  272.   .$remove($chat(3),=):_dosel @Express " s $remove($chat(3),=)
  273.   .$get(1):_dosel @Express " s $get(1)
  274.   .$send(1):_dosel @Express " s $send(1)
  275.   .-
  276.   .Other...:set %_arhelp _dosel @Express " s | _askr _arhelp Nick to send $_plural(file,$sline(@Express,0)) to?
  277.   Play:if ($sline(@Express,1).ln < 5) halt | splay $_getexp($sline(@Express,1))
  278.   -
  279.   %_findrcpop
  280.   .Original sender:_doselos @Express
  281.   .-
  282.   .$query(1):_dosel @Express " dcc i $query(1)
  283.   .$query(2):_dosel @Express " dcc i $query(2)
  284.   .$query(3):_dosel @Express " dcc i $query(3)
  285.   .$remove($chat(1),=):_dosel @Express " dcc i $remove($chat(1),=)
  286.   .$remove($chat(2),=):_dosel @Express " dcc i $remove($chat(2),=)
  287.   .$remove($chat(3),=):_dosel @Express " dcc i $remove($chat(3),=)
  288.   .$get(1):_dosel @Express " dcc i $get(1)
  289.   .$send(1):_dosel @Express " dcc i $send(1)
  290.   .-
  291.   .Other...:set %_arhelp _dosel @Express " dcc i | _askr _arhelp Nick to request completion of $_plural(file,$sline(@Express,0)) from?
  292.   -
  293.   Misc
  294.   .Copy to clipboard:clipboard $_getexp($sline(@Express,1))
  295.   .Type file to window...:set %_arhelp _doplay | _askr _arhelp Nick/channel to type $_getexp($sline(@Express,1)) to?(once started, /play stop to cancel)
  296.   .-
  297.   .$iif(3.1 !isin $os,Explore from dir):if ($sline(@Express,1).ln < 5) halt | run explorer $_ltok($_j($_numtok(92,$_getexp($sline(@Express,1)))),92,$_getexp($sline(@Express,1)))
  298.   .Winzip:_askr _zipsel Filename to zip to?
  299.   .-
  300.   .Roulette sound window...:_ff2r
  301.   .-
  302.   .Delete files...:if ($sline(@Express,1).ln < 5) halt | if ($sline(@Express,0) == 1) _askyn _delsel Delete $_getexp($sline(@Express,1)) $+ ? | else _askyn _delsel Delete $sline(@Express,0) selected files?
  303.   .Remove lines:if ($sline(@Express,1).ln < 5) halt | set %.rm.lin $sline(@Express,0) | :loop | dline @Express $sline(@Express,%.rm.lin).ln | if ($_vd(.rm.lin) > 0) goto loop
  304.   -
  305.   Save list
  306.   .Overwrite...:_askr _effsave Filename to save list to? (overwriting if exists)
  307.   .Append...:_askr _effsave2 Filename to save list to? (appending to end if exists)
  308.   Select all:sline @Express 5 | set %.ds.num $line(@Express,0) | :loop | sline -a @Express %.ds.num | if ($_vd(.ds.num) > 5) goto loop | sline -a @Express 1 | sline -r @Express 1
  309.   Close:window -c @Express
  310.   -
  311.   Help:help ! express file finder popups
  312. }
  313. alias _getexp return $strip($_rtok(1,9,$1-))
  314. alias _doplay play $1 $_getexp($sline(@Express,1)) 500
  315. alias _effsave {
  316.   .savebuf $calc($line(@Express,0) - 4) @Express $1-
  317.   _recfile2 $1-
  318.   titlebar @Express $gettok($window(@Express).titlebar,1-5,32) - List saved to $1-
  319. }
  320. alias _effsave2 {
  321.   .savebuf -a $calc($line(@Express,0) - 4) @Express $1-
  322.   _recfile2 $1-
  323.   titlebar @Express $gettok($window(@Express).titlebar,1-5,32) - List to $1- (appended)
  324. }
  325. alias _effhl {
  326.   set %.ds.max $line(@Express,0)
  327.   set %.ds.num 5
  328.   if ($1 isin zl) {
  329.     _progress.1 Calculating file sizes...
  330.     unset %.ds.total
  331.   }
  332.   else _progress.1 Highlighting...
  333.   :loop1
  334.   set %.ds.line $line(@Express,%.ds.num)
  335.   if ($1 == z) {
  336.     if (     isin %.ds.line) set %.ds.line $gettok(%.ds.line,2,9)
  337.     set %.ds.size $lof($strip(%.ds.line))
  338.     inc %.ds.total %.ds.size
  339.     set %.ds.line  $+ %col.base $+ ( $+ $_size2(%.ds.size) $+ ) $+      $+ %.ds.line
  340.   }
  341.   elseif ($1 == l) {
  342.     if (     isin %.ds.line) set %.ds.line $gettok(%.ds.line,2,9)
  343.     set %.ds.size $lines($strip(%.ds.line))
  344.     if (%.ds.size < 1) set %.ds.size n/a
  345.     elseif ($calc(%.ds.size * 350) < $lof($strip(%.ds.line))) set %.ds.size n/a
  346.     else inc %.ds.total %.ds.size
  347.     set %.ds.line  $+ %col.base $+ ( $+ %.ds.size $+ ) $+      $+ %.ds.line
  348.   }
  349.   elseif ($1 == e) {
  350.     if (     isin %.ds.line) { set %.ds.pre $gettok(%.ds.line,1,9) $+      | set %.ds.line $gettok(%.ds.line,2,9) }
  351.     else unset %.ds.pre
  352.     if (. isin %.ds.line) {
  353.       set %.ds.ext $_rtok(1,46,$strip(%.ds.line))
  354.       set %.ds.line %.ds.pre $+ $remtok($strip(%.ds.line),%.ds.ext,46) $+ %col.att $+ . $+ %.ds.ext
  355.     }
  356.     else set %.ds.line %.ds.pre $+ %.ds.line
  357.   }
  358.   elseif ($1 == f) {
  359.     if (     isin %.ds.line) { set %.ds.pre $gettok(%.ds.line,1,9) $+      | set %.ds.line $gettok(%.ds.line,2,9) }
  360.     else unset %.ds.pre
  361.     set %.ds.line $strip(%.ds.line)
  362.     if (. isin %.ds.line) {
  363.       set %.ds.ext $_rtok(1,46,%.ds.line)
  364.       set %.ds.line %.ds.pre $+ $nofile(%.ds.line) $+ %col.att $+ $remtok($nopath(%.ds.line),%.ds.ext,46) $+ . $+ %.ds.ext
  365.     }
  366.     else set %.ds.line %.ds.pre $+ $nofile(%.ds.line) $+ %col.att $+ $nopath(%.ds.line)
  367.   }
  368.   else {
  369.     if (     isin %.ds.line) { set %.ds.pre $gettok(%.ds.line,1,9) $+      | set %.ds.line $gettok(%.ds.line,2,9) }
  370.     else unset %.ds.pre
  371.     set %.ds.line $strip(%.ds.line)
  372.     set %.ds.path $nofile(%.ds.line)
  373.     if ($count(%.ds.path,\) == 1) set %.ds.line %.ds.pre $+ $remove(%.ds.path,\) $+ %col.att $+ \ $+ $nopath(%.ds.line)
  374.     else {
  375.       set %.ds.last $_rtok(1,92,%.ds.path)
  376.       set %.ds.line %.ds.pre $+ $remtok(%.ds.path,%.ds.last,92) $+ %col.att $+ \ $+ %.ds.last $+ \ $+ $nopath(%.ds.line)
  377.     }
  378.   }
  379.   rline @Express %.ds.num %.ds.line
  380.   if ($_vi(.ds.prog) > 5) {
  381.     unset %.ds.prog
  382.     set %.ds.perc $int($calc(%.ds.num * 100 / %.ds.max))
  383.     _progress.2 %.ds.perc %.ds.num $+ / $+ %.ds.max - %.ds.line
  384.   }
  385.   if ($_vi(.ds.num) <= %.ds.max) goto loop1
  386.   window -c @Progress
  387.   if ($1 == z) titlebar @Express $gettok($window(@Express).titlebar,1-5,32) - Total size - $_size2(%.ds.total)
  388.   elseif ($1 == l) titlebar @Express $gettok($window(@Express).titlebar,1-5,32) - Total lines - %.ds.total
  389. }
  390. alias _efffind {
  391.   sline @Express 1 | sline -r @Express 1
  392.   set %.ds.toks $replace($replace($1-,*,$chr(32)),?,$chr(32))
  393.   if (%.ds.toks == $null) _error You need to use a more specific search string.
  394.   set %.ds.find * $+ $replace($1-,$chr(32),*) $+ *
  395.   set %.ds.max $line(@Express,0)
  396.   set %.ds.num 5
  397.   set %.ds.ins 5
  398.   _progress.1 Scanning for text...
  399.   :loop1
  400.   if (     isin $line(@Express,%.ds.num)) set %.ds.pre $gettok($line(@Express,%.ds.num),1,9) $+     
  401.   else unset %.ds.pre
  402.   set %.ds.line $_getexp($line(@Express,%.ds.num))
  403.   if (%.ds.find iswm %.ds.line) {
  404.     set %.ds.tok $_numtok(32,%.ds.toks)
  405.     :loop2
  406.     set %.ds.new %col.att $+ $gettok(%.ds.toks,%.ds.tok,32) $+ 
  407.     set %.ds.line $replace(%.ds.line,$gettok(%.ds.toks,%.ds.tok,32),%.ds.new)
  408.     if ($_vd(.ds.tok) > 0) goto loop2
  409.     dline @Express %.ds.num
  410.     iline @Express %.ds.ins %.ds.pre $+ %.ds.line
  411.     inc %.ds.ins
  412.   }
  413.   if ($_vi(.ds.prog) > 5) {
  414.     unset %.ds.prog
  415.     set %.ds.perc $int($calc(%.ds.num * 100 / %.ds.max))
  416.     _progress.2 %.ds.perc %.ds.num $+ / $+ %.ds.max - %.ds.line
  417.   }
  418.   if ($_vi(.ds.num) <= %.ds.max) goto loop1
  419.   window -c @Progress
  420. }
  421. alias _doselos {
  422.   if ($sline($1,1).ln < 5) halt
  423.   set %.ds.num $sline($1,0)
  424.   :loop
  425.   set %.ds.line $_getexp($sline($1,%.ds.num))
  426.   set %.ds.nm $sline($1,%.ds.num).ln
  427.   if ($chr(32) isin %.ds.line) dcc i %_ffreqc. [ $+ [ $calc(%.ds.nm - 4) ] ] " $+ %.ds.line $+ "
  428.   else dcc i %_ffreqc. [ $+ [ $calc(%.ds.nm - 4) ] ] %.ds.line
  429.   if ($_vd(.ds.num) > 0) goto loop
  430. }
  431. alias _dosel {
  432.   if ($sline($1,1).ln < 5) halt
  433.   set %.ds.num $sline($1,0)
  434.   :loop
  435.   set %.ds.line $_getexp($sline($1,%.ds.num))
  436.   if ($2 == ") {
  437.     if ($chr(32) isin %.ds.line) $3- " $+ %.ds.line $+ "
  438.     else $3- %.ds.line
  439.   }
  440.   else $2- %.ds.line
  441.   if ($_vd(.ds.num) > 0) goto loop
  442. }
  443. alias _delsel {
  444.   set %.ds.max $sline(@Express,0)
  445.   set %.ds.total %.ds.max
  446.   set %.ds.num 1
  447.   set %.ds.cur 0
  448.   unset %.+ds.err
  449.   _progress.1 Deleting files...
  450.   :loop
  451.   set %.ds.file $_getexp($sline(@Express,%.ds.num))
  452.   .remove %.ds.file
  453.   if ($exists(%.ds.file)) { set %.+ds.err $true | disps Error- Could not delete " $+ %.ds.file $+ " | inc %.ds.num }
  454.   else { dline @Express $sline(@Express,%.ds.num).ln | dec %.ds.max }
  455.   inc %.ds.cur
  456.   if ($calc(%.ds.cur % 5) == 1) {
  457.     set %.ds.perc $int($calc(%.ds.cur * 100 / %.ds.total))
  458.     _progress.2 %.ds.perc %.ds.perc $+ % - %.ds.file
  459.   }
  460.   if (%.ds.num <= %.ds.max) goto loop
  461.   window -c @Progress
  462.   if (%.+ds.err) _error Not all files could be deleted! See status window for list of files not deleted. (might be read-only files.)
  463. }
  464. alias _zipsel {
  465.   if ($sline(@Express,1).ln < 5) halt
  466.   set %.zipper $_ppcfg(misc,winzip)
  467.   if (%.zipper == $null) _error Location of WinZip not defined in CONFIG.INI. Type /findzip to locate WinZip.
  468.   if ($_not($exists(%.zipper)))  _error WinZip has moved or been deleted. Type /findzip to locate WinZip.
  469.   set %.tozip $mircdir $+ $_ppsub $+ \winzip.lst
  470.   if ($exists(%.tozip)) .remove %.tozip
  471.   set %.zip.num $sline(@Express,0)
  472.   :loop
  473.   write %.tozip $_wrapfile($_getexp($sline(@Express,%.zip.num)))
  474.   if ($_vd(.zip.num) > 0) goto loop
  475.   else run %.zipper -a $_adddir($1-) @ $+ $_wrapfile(%.tozip)
  476. }
  477. ; -----------------------------------------------------
  478. ; Click 'N' Color
  479. ; -----------------------------------------------------
  480. menu @CNC {
  481.   Apply style to current text:cnc
  482.   Enable style for all future text:cnc +
  483.   -
  484.   Reset settings:cncoff
  485.   Close Click 'N' Color:cnc -
  486.   -
  487.   Help:help ! CNC command
  488. }
  489. on 1:close:@Click:cnc - @Click
  490. on 1:close:@BK:cnc - @BK
  491. on 1:close:@FG:cnc - @FG
  492. on 1:close:@Attr:cnc - @Attr
  493. on 1:close:@Pattern:cnc - @Pattern
  494. on 1:close:@Text:cnc - @Text
  495. on 1:close:@Backwards:cnc - @Backwards
  496. ; -----------------------------------------------------
  497. ; Banlist editor
  498. ; -----------------------------------------------------
  499. menu @Banlist {
  500.   dclick /if ($1 < 5) halt | set %.tog.num $sline(@Banlist,0) | :loop | _BLmodban ! $gettok($sline(@Banlist,%.tog.num),2,9) $sline(@Banlist,%.tog.num).ln | if ($_vd(.tog.num) > 0) goto loop
  501.   Toggle bans:if ($sline(@Banlist,1).ln < 5) halt | set %.tog.num $sline(@Banlist,0) | :loop | _BLmodban ! $gettok($sline(@Banlist,%.tog.num),2,9) $sline(@Banlist,%.tog.num).ln | if ($_vd(.tog.num) > 0) goto loop
  502.   Add new ban...:set %_arhelp _BLmodban + | _askr _arhelp Banmask to add?
  503.   Modify bans
  504.   .Enter new ban mask...:if ($sline(@Banlist,1).ln < 5) halt | _BLgetmod | _BLdomod a
  505.   .Change to domain bans:if ($sline(@Banlist,1).ln < 5) halt | _BLgetmod | _BLdomod d
  506.   .Change to ident@domain bans:if ($sline(@Banlist,1).ln < 5) halt | _BLgetmod | _BLdomod i
  507.   -
  508.   Add bans to blacklist
  509.   .For %_banchan $+ ...:if ($sline(@Banlist,1).ln < 5) halt | _BLgetmod | _BLdomod c
  510.   .For all channels...:if ($sline(@Banlist,1).ln < 5) halt | _BLgetmod | _BLdomod b
  511.   %s^xwban:if ($sline(@Banlist,1).ln < 5) halt | if ($_isxw(%_banchan) == $null) _error X or W is not on that channel! | _BLgetmod | _BLdomod x
  512.   %s^csban:if ($sline(@Banlist,1).ln < 5) halt | _BLgetmod | _BLdomod z
  513.   -
  514.   Cleanup
  515.   .Remove bans matching a user or mask...:_askr _BLclean Nick or address/mask to match?
  516.   .Remove nick-based bans:_BLclean n
  517.   .Remove dynamic IP bans:_BLclean d
  518.   .Remove bans older than...:set %_arhelp _BLclean o | _askr _arhelp Remove bans older than how many days?
  519.   .Remove illegal bans:_BLclean i
  520.   Backup
  521.   .Save banlist to file...:_askr _BLsave Filename to save to?
  522.   .Import banlist... (add to banlist):set %.toimport $dir="Banlist to import?" $mircdir*.txt | _BLimport %.toimport
  523.   .Import banlist... (replace banlist):set %.toimport $dir="Banlist to import?" $mircdir*.txt | set %.tog.num $line(@Banlist,0) | :loop | _BLmodban - $gettok($line(@Banlist,%.tog.num),2,9) %.tog.num | if ($_vd(.tog.num) > 3) goto loop | _BLimport %.toimport
  524.   -
  525.   Select all:sline @Banlist 5 | set %.tog.num $line(@Banlist,0) | :loop | sline -a @Banlist %.tog.num | if ($_vd(.tog.num) > 4) goto loop
  526.   Close:{
  527.     window -c @Banlist
  528.     if ((%_bantoadd != $null) || (%_bantorem != $null)) {
  529.       if ($me !isop %_banchan) { unset %_ban* | _error You are not an op on %_banchan $+ , banlist modifications canceled. }
  530.       if (%_bantorem != $null) _massmode %_banchan -b %_bantorem | if (%_bantoadd != $null) _massmode %_banchan +b %_bantoadd
  531.     }
  532.     unset %_ban*
  533.   }
  534.   -
  535.   Help:help ! banlist popups
  536. }
  537. alias _BLtitle {
  538.   set %.bl.title $gettok($window(@Banlist).titlebar,1-3,32) 
  539.   if ((%_banrems < 1) && (%_banadds < 1)) titlebar @Banlist %.bl.title %_bancount $_plural(ban,%_bancount)
  540.   elseif (%_banadds < 1) titlebar @Banlist %.bl.title %_bancount $_plural(ban,%_bancount) originally, removing %_banrems $+ , leaving $calc(%_bancount - %_banrems)
  541.   elseif (%_banrems < 1) titlebar @Banlist %.bl.title %_bancount $_plural(ban,%_bancount) originally, adding %_banadds $+ , making $calc(%_bancount + %_banadds) total
  542.   else titlebar @Banlist %.bl.title %_bancount $_plural(ban,%_bancount) originally, adding %_banadds $+ , removing %_banrems $+ , making $calc(%_bancount + %_banadds - %_banrems) total
  543. }
  544. ; _BLmodban -/+/! banmask [line#] [-a]
  545. ; (-a means, if new line added, add to selections not replace)
  546. alias _BLmodban {
  547.   if (($3 isnum) && ($3 != $null) && ($gettok($line(@Banlist,$3),2,9) == $2)) { set %.bl.num $3 | goto found }
  548.   set %.bl.num $line(@Banlist,0)  
  549.   :loop
  550.   if ($gettok($line(@Banlist,%.bl.num),2,9) == $2) goto found
  551.   if ($_vd(.bl.num) > 4) goto loop
  552.   if ($1 == -) return
  553.   if (($3 == $null) || ($3 !isnum)) set %.bl.addto $line(@Banlist,0)
  554.   else set %.bl.addto $3
  555.   inc %.bl.addto
  556.   if (-a isin $3-) set %.bl.switch -a
  557.   else set %.bl.switch -s
  558.   iline %.bl.switch @Banlist %.bl.addto %col.att $+ +b     $+ $2 $+     Adding ban
  559.   inc %_banadds
  560.   set %_bantoadd %_bantoadd $2
  561.   _BLtitle
  562.   return
  563.   :found
  564.   set %.bl.op $1
  565.   set %.bl.is $remove($strip($gettok($line(@Banlist,%.bl.num),1,9)),b)
  566.   if ($1 == !) {
  567.     if (%.bl.is == -) set %.bl.op +
  568.     else set %.bl.op -
  569.   }
  570.   if (%.bl.op == -) {
  571.     if (%.bl.is == +) { dline @Banlist %.bl.num | dec %_banadds | set %_bantoadd $remtok(%_bantoadd,$2,32) }
  572.     elseif (%.bl.is == *) {
  573.       rline -a @Banlist %.bl.num %col.att $+ -b     $+ $2 $+      $+ %col.info3 $+ Removing ban set by $gettok($line(@Banlist,%.bl.num),3-,9)
  574.       inc %_banrems
  575.       set %_bantorem %_bantorem $2
  576.     }
  577.   }
  578.   elseif (%.bl.is == -) {
  579.     rline -a @Banlist %.bl.num %col.att $+ *b     $+ $2 $+      $+ $gettok($gettok($line(@Banlist,%.bl.num),3-,9),5-,32)
  580.     dec %_banrems
  581.     set %_bantorem $remtok(%_bantorem,$2,32)
  582.   }
  583.   _BLtitle
  584. }
  585. alias _BLgetmod {
  586.   unset %.mod.todo
  587.   set %.mod.max $sline(@Banlist,0)
  588.   set %.mod.num 1
  589.   :loop
  590.   set %.mod.todo %.mod.todo $gettok($sline(@Banlist,%.mod.num),2,9)
  591.   if ($_vi(.mod.num) <= %.mod.max) goto loop
  592. }
  593. alias _BLdomod {
  594.   :loop
  595.   set %.mod.mask $gettok(%.mod.todo,1,32)
  596.   set %.mod.todo $remtok(%.mod.todo,%.mod.mask,32)
  597.   if ($1 == a) _askr _BLrepmask New mask for %.mod.mask $+ ?
  598.   elseif ($1 isin bc) {
  599.     set %_arhelp _BLaddbxw $1
  600.     if ($2 == $null) _askr _arhelp Blacklist reason for %.mod.mask $+ ?
  601.     else _pentry _arhelp $+ $_s2p($2-) Blacklist reason for %.mod.mask $+ ?
  602.   }
  603.   elseif ($1 == x) {
  604.     set %.oldlvl $3
  605.     set %.oldban $4-
  606.     if ($2 == $null) _askr _BLaddbxw1 Duration of X/W ban for %.mod.mask $+ , in hours? (336 max)
  607.     else _pentry _BLaddbxw1 $+ $2 Duration of X/W ban for %.mod.mask $+ , in hours? (336 max)
  608.   }
  609.   elseif ($1 == z) _msgcs akick %_banchan add %.mod.mask
  610.   elseif ($1 == d) {
  611.     set %.mod.new $_ppmask(%.mod.mask,4)
  612.     if ((%.mod.new != %.mod.mask) && (%.mod.new != *!*@*)) {
  613.       _BLmodban - %.mod.mask
  614.       _BLmodban + %.mod.new %.bl.num -a
  615.     }
  616.   }
  617.   elseif ($1 == i) {
  618.     set %.mod.new $_ppmask(%.mod.mask,3)
  619.     if ((%.mod.new != %.mod.mask) && (%.mod.new != *!*@*)) {
  620.       _BLmodban - %.mod.mask
  621.       _BLmodban + %.mod.new %.bl.num -a
  622.     }
  623.   }
  624.   if (%.mod.todo != $null) goto loop
  625. }
  626. alias _BLrepmask {
  627.   _BLmodban - %.mod.mask
  628.   _BLmodban + $1 %.bl.num -a
  629.   if (%.mod.todo != $null) _BLdomod a
  630. }
  631. alias _BLaddbxw1 {
  632.   set %_arhelp _BLaddbxw2 $1
  633.   if (%.oldlvl == $null) _askr _arhelp Level of X/W ban for %.mod.mask $+ ?
  634.   else _pentry _arhelp $+ %.oldlvl Level of X/W ban for %.mod.mask $+ ?
  635. }
  636. alias _BLaddbxw2 {
  637.   set %_arhelp _BLaddbxw x $1-2
  638.   if (%.oldban == $null) _askr _arhelp X/W ban reason for %.mod.mask $+ ?
  639.   else _pentry _arhelp $+ $_s2p(%.oldban) X/W ban reason for %.mod.mask $+ ?
  640. }
  641. alias _BLaddbxw {
  642.   if ($1 == b) black %.mod.mask -q $2-
  643.   elseif ($1 == c) black %_banchan %.mod.mask -q $2-
  644.   else { _msgxw $_isxw(%_banchan) ban %_banchan %.mod.mask $2- }
  645.   if (%.mod.todo != $null) _BLdomod $1-
  646. }
  647. alias _BLclean {
  648.   if ($gettok($1,2,33) == *@*) _error You should specify a more specific mask for banlist cleaning.
  649.   elseif ($1 !isin d:n:i:o) {
  650.     if ($_ismask($1)) set %.cln.clean $1
  651.     else {
  652.       set %.cln.clean $address($1,5)
  653.       if (%.cln.clean == $null) _lookup $1 ! _BLclean ,
  654.     }
  655.   }
  656.   set %.cln.num $line(@Banlist,0)
  657.   unset %.+cln.found
  658.   :loopm
  659.   set %.cln.ban $gettok($line(@Banlist,%.cln.num),2,9)
  660.   unset %.+cln.rem
  661.   if ($1 == o) {
  662.     set %.cln.age $gettok($line(@Banlist,%.cln.num),5,9)
  663.     if ($gettok(%.cln.age,2,32) == days) {
  664.       set %.cln.age $strip($gettok(%.cln.age,1,32))
  665.       if (%.cln.age >= $2) set %.+cln.rem $true
  666.     }
  667.   }
  668.   elseif ($1 == n) {
  669.     if ($gettok(%.cln.ban,2,33) == *@*) set %.+cln.rem $true
  670.   }
  671.   elseif ($1 == d) {
  672.     set %.cln.dom $gettok(%.cln.ban,2,64)
  673.     if ((* !isin %.cln.dom) && (? !isin %.cln.dom)) set %.+cln.rem $true
  674.   }
  675.   elseif ($1 == i) {
  676.     if ($count(%.cln.ban,!) != 1) set %.+cln.rem $true
  677.     elseif ($count(%.cln.ban,@) != 1) set %.+cln.rem $true
  678.     else {
  679.       set %.cln.nick $gettok(%.cln.ban,1,33)
  680.       set %.cln.dom $gettok(%.cln.ban,2,64)
  681.       set %.cln.scan $len(%.cln.nick)
  682.       :loop1
  683.       set %.cln.asc $mid(%.cln.nick,%.cln.scan,1)
  684.       if ((%.cln.asc !isletter) && (%.cln.asc !isnum) && (%.cln.asc !isin *?\|[]{}`^-_)) set %.+cln.rem $true
  685.       else {
  686.         if ($_vd(.cln.scan) > 0) goto loop1
  687.         set %.cln.scan $len(%.cln.dom)
  688.         :loop2
  689.         set %.cln.asc $mid(%.cln.dom,%.cln.scan,1)
  690.         if ((%.cln.asc !isletter) && (%.cln.asc !isnum) && (%.cln.asc !isin *?\|[]{}`^-_.&+=)) set %.+cln.rem $true
  691.         elseif ($_vd(.cln.scan) > 0) goto loop2
  692.       }
  693.     }
  694.   }
  695.   elseif ((%.cln.ban iswm %.cln.clean) || (%.cln.clean iswm %.cln.ban)) { set %.+cln.rem $true | set %.+cln.found $true }
  696.   if (%.+cln.rem) _BLmodban - %.cln.ban %.cln.num
  697.   if ($_vd(.cln.num) > 3) goto loopm
  698.   if (($1 !isin d:n:i:o) && (%.+cln.found == $null)) _error No matching bans found
  699. }
  700. menu @Pager {
  701.   dclick /window -c @Pager
  702.   $_dynpop(%+pager) Pager on:pager on
  703.   $_dynpop($_not(%+pager)) Pager off:pager off
  704.   -
  705.   Close:window -c @Pager
  706. }
  707.